package cn.itcast.usermanager.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.github.pagehelper.PageInfo;

import cn.itcast.usermanager.pojo.EasyUIPage;
import cn.itcast.usermanager.pojo.User;
import cn.itcast.usermanager.service.UserService;

/**
 * UserController
 * 
 * @author Administrator
 * @date 2016年4月15日上午10:58:53
 */
@Controller
@RequestMapping("user")
public class UserController {

	// 注入service层对象
	@Autowired
	// private UserService userService;
	private UserService userService;

	/**
	 * 通用页面跳转逻辑
	 * 
	 * 要访问到WEB-INF/views/users.jsp
	 * 就需要在项目中访问 http://127.0.0.1:8080/user/users.html
	 * 这是项目的入口,它就会跳转到WEB-INF/views/users.jsp中
	 * @return
	 * @date 2016年4月15日上午11:03:10
	 */
	@RequestMapping("{pageName}.html")
	public String toJsp(@PathVariable("pageName") String pageName) {
		return pageName;
	}

	/**
	 * 分页查询用户信息
	 * 
	 * @param pageNum
	 * @param pageSize
	 * @return
	 * @date 2016年4月15日下午2:33:00
	 */
	@RequestMapping("list")
	@ResponseBody
	public EasyUIPage queryUserByPage(@RequestParam(value = "page", defaultValue = "1") Integer pageNum,
			@RequestParam(value = "rows", defaultValue = "5") Integer pageSize) {
		EasyUIPage easyUIPage = new EasyUIPage();
		List<User> userList = userService.queryUserByPage(pageNum, pageSize);
		// 封装分页数据
		PageInfo<User> pageInfo = new PageInfo<User>(userList);
		easyUIPage.setRows(pageInfo.getList());
		easyUIPage.setTotal(pageInfo.getTotal());
		return easyUIPage;
	}

	/**
	 * 添加用户
	 * 
	 * @return
	 * @date 2016年4月15日下午3:38:28
	 */
	@RequestMapping("save")
	@ResponseBody
	public Map<String, Object> addUser(User user) {
		Map<String, Object> resMap = new HashMap<String, Object>();
		// 调用业务层方法
		Integer num = userService.addUser(user);
		// 判断添加是否成功
		if (num > 0) {
			resMap.put("status", "200");
		} else {//这里的500是随便写的
			resMap.put("status", "500");
		}
		return resMap;
	}

	/**
	 * 修改用户
	 * 
	 * @return
	 * @date 2016年4月15日下午4:32:07
	 */
	@RequestMapping("updateUser")
	public String updateUser(User user) {
		// 调用业务层方法
		Integer num = userService.updateUser(user);
		if (num > 0) {
			// 修改成功,跳转到查询页面的映射
			return "redirect:/user/users.html";
		} else {
			return "redirect:/user/error.html";
		}
	}

	/**
	 * 删除用户
	 * 
	 * @return
	 * @date 2016年4月15日下午6:46:52
	 */
	@RequestMapping("delete")
	@ResponseBody
	public Map<String, Object> deleteUser(@RequestParam("ids") String[] ids) {
		// 调用业务层删除方法
		Map<String, Object> resMap = new HashMap<String, Object>();
		Integer num = userService.deleteUserByIds(ids);
		if (num > 0) {
			resMap.put("status", "200");
		} else {
			resMap.put("status", "500");
		}
		return resMap;
	}

	/**
	 * 导出Excel
	 * 
	 * @return
	 * @date 2016年4月15日下午8:02:58
	 */
	@RequestMapping("export/excel")
	public ModelAndView exportExcel(@RequestParam(value="page",defaultValue="1") Integer pageNum, @RequestParam(value="rows",defaultValue="5") Integer pageSize) {
		// 调用业务层方法先进行查询该页数据信息
		List<User> list = userService.queryUserByPage(pageNum, pageSize);
		ModelAndView mv = new ModelAndView();
		mv.setViewName("userExcel");
		mv.addObject("userList", list);
		return mv;
	}

}
